/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package conexaobancodedados;

import bancodedados3d.Main;
//import com.mysql.jdbc.Statement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author fosa
 */
public class Consulta {

    public Object[][][] consulta(String SQL) {

        Statement stm = Main.GlConexão.getGlconexão();

        Object[][][] retorno = new Object[2][2][2];

        try {
            Object[][] matriz;
            String[] titulo;

            ResultSet result = stm.executeQuery(SQL);
            ResultSetMetaData meta = result.getMetaData();

// vetor do titulo da tabela
            int NumCol = meta.getColumnCount();
            titulo = new String[NumCol];

            for (int i = 1; i <= NumCol; i++) {
                titulo[i - 1] = (String) meta.getColumnLabel(i);
            }

//pegando o numero de linhas
/*matriz = new Object[0][NumCol];
            int cont = 0;
            while (result.next()) {
            Object[][] matriztemp = new Object[cont + 1][NumCol];
            matriztemp[cont] = new Object[NumCol];
            for (int i = 0; i < cont; i++) {
            matriztemp[i] = matriz[i];
            }

            for(int i =0;i<NumCol;i++){
            matriztemp[cont][i]  = result.getObject(i);
            }


            matriz = matriztemp;
            cont++;
            }*/

                       result.last();
            int numlinhas = result.getRow();
            result.first();

            //criando a matriz dos resultados
            matriz = new Object[numlinhas][NumCol];
            int j = 0;
            try {
            do {
            for (int i = 1; i <= NumCol; i++) {
            matriz[j][i - 1] = result.getObject(i);
            }
            j++;
            } while (result.next());
            } catch (java.lang.ArrayIndexOutOfBoundsException e) {
            System.out.print("Consulta sem resultado");
            }
            
//            retorno = new RetornoConsulta();
//            retorno.SetObj(matriz);
//            retorno.SetStr(titulo);

            retorno[0][0] = titulo;
            retorno[1] = matriz;

        } catch (SQLException ex) {
            System.out.println("Houve erro na Consulta");
        } catch (NullPointerException ex) {
            System.out.println("Houve erro na Consulta nulo");
            ex.printStackTrace();
        }
        return retorno;
    }

    public int Atualizar(String SQL) {

        Statement stm = Main.GlConexão.getGlconexão();

        int ret = 1;
        try {
            stm.executeUpdate(SQL);
        } catch (SQLException ex) {
            System.out.println("erro na inserçao");
            ret = -1;
        }
        return ret;
    }
}
